package com.laiketui.plugin.common.interfaces;

import com.laiketui.plugin.common.domain.base.config.plugin.MchConfigModel;
import com.laiketui.plugin.common.domain.vo.goods.AddFreihtVo;
import com.laiketui.core.exception.LaiKeAPIException;

import java.math.BigDecimal;
import java.util.Map;

/**
 * 关于店铺公共类
 *
 * @author Trick
 * @date 2020/11/13 9:11
 */
public interface PublicMchService {

    /**
     * 自提结算
     *
     * @param storeId       商城id
     * @param shopId        店铺id
     * @param res
     * @param shopAddressId 门店地址
     * @return
     */
    Map<String, Object> settlement(int storeId, int shopId, String res, int shopAddressId, int storeType) throws LaiKeAPIException;


    /**
     * 修改默认运费
     * 【php freight.set_default】
     *
     * @param vo -
     * @throws LaiKeAPIException -
     * @author Trick
     * @date 2020/12/1 16:15
     */
    void setDefault(AddFreihtVo vo) throws LaiKeAPIException;


    /**
     * 生成提取码
     * 【php mch.extraction_code】
     *
     * @return String
     * @throws LaiKeAPIException -
     * @author wangxian
     * @date 2020/12/14 10:49
     */
    String extractionCode() throws LaiKeAPIException;

    /**
     * 创建二维码
     * 【 php mch.extraction_code_img】
     *
     * @param extractionCode
     * @return
     * @throws LaiKeAPIException
     */
    String createQRCodeImg(String extractionCode, int storeId, int store_type) throws LaiKeAPIException;

    /**
     * 店铺设置
     * @param storeId
     * @param mchId
     * @return
     * @throws LaiKeAPIException
     */
    MchConfigModel getMchConfig(Integer storeId, Integer mchId) throws LaiKeAPIException;


    /**
     * 确认收货予店铺结算
     * 【php mch.parameter】
     * 【自提不会有跨店订单,所以店铺id只会有一个】
     *
     * @param storeId      -
     * @param shopId       - 店铺id
     * @param orderno      - 订单号
     * @param paymentMoney - 订单金额
     * @param allow        - 积分
     * @throws LaiKeAPIException -
     * @author Trick
     * @date 2020/12/1 11:10
     */
    void clientConfirmReceipt(int storeId, int shopId, String orderno, BigDecimal paymentMoney, BigDecimal allow) throws LaiKeAPIException;

}
